﻿#ifndef BASE_TYPES_H
#define BASE_TYPES_H
#include <cstdint>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <vector>

struct Location {
	int x;
	int y;
};

struct Double2 {
	double x;
	double y;
};

struct Color {
	uint8_t x;
	uint8_t y;
	uint8_t z;
};

struct Size2 {
	size_t x;
	size_t y;
};

struct Mat {
	double** data;
	int rows;
	int cols;
	Mat() {};
	~Mat();
	Mat(int y, int x);
	Mat(int y, int x, double val);
	double& at(int y, int x) const;
	void release() const;
	Mat operator()(int y_begin, int y_end, int x_begin, int x_end);
	Mat clone();
	void blur(double sigma);
};

Mat vconcat(Mat& a, Mat& b);

#endif